//
// Created by Semir on 2020/4/2.
//

#include <iostream>
#include <algorithm>

using namespace std;

const int MAX_N = 1000;
int n;
int x;
int seq[MAX_N];

bool checkDelSide(int *seq, int minIndex, int maxIndex) {
    bool flag = false;  //默认删除左边的
    if (seq[maxIndex] - seq[maxIndex - 1] > seq[minIndex + 1] - seq[minIndex]) {
        flag = true;
    } else if (seq[maxIndex] - seq[maxIndex - 1] == seq[minIndex + 1] - seq[minIndex]) {
        minIndex++;
        maxIndex--;
        while (minIndex < maxIndex) {
            if (seq[maxIndex] - seq[maxIndex - 1] != seq[minIndex + 1] - seq[minIndex]) {
                if (seq[maxIndex] - seq[maxIndex - 1] > seq[minIndex + 1] - seq[minIndex]) {
                    flag = true;
                }
                break;
            }
            minIndex++;
            maxIndex--;
        }
    }
    return flag;
}

int main () {
    cin >> n >> x;
    for (int i = 0; i < n; i++) {
        cin >> seq[i];
    }
    sort(seq, seq + n);
    int minIndex = 0;
    int maxIndex = n - 1;
    int delNum = 0;
    while (seq[maxIndex] - seq[minIndex] > x) {
//        if (seq[maxIndex] - seq[maxIndex - 1] > seq[minIndex + 1] - seq[minIndex]) {
//            maxIndex--;
//        } else if (seq[maxIndex] - seq[maxIndex - 1] < seq[minIndex + 1] - seq[minIndex]) {
//            minIndex++;
//        } else {
//            maxIndex--;
//        }
        if (checkDelSide(seq, minIndex, maxIndex)) {
            maxIndex--;
        } else {
            minIndex++;
        }
        delNum++;
    }
//    for (int i = 0; i < n; i++) {
//        cout << seq[i] << " ";
//    }
    cout << delNum << endl;
    return 0;
}

